package cc.rengu.oltp.service.common.dao;

import cc.rengu.oltp.service.common.entity.SrcChannelInfo;

import java.util.List;
import java.util.Set;

/**
 * 交易渠道信息表操作接口
 * Created by 王成 on 2020/2/10
 */
public interface SrcChannelInfoMapper {
    /**
     * 登记交易渠道信息
     *
     * @param srcChannelInfo 交易渠道信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertSrcChannelInfo(SrcChannelInfo srcChannelInfo) throws Exception;

    /**
     * 更新交易渠道信息
     *
     * @param srcChannelInfo 交易渠道信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateSrcChannelInfoByPrimaryKey(SrcChannelInfo srcChannelInfo) throws Exception;

    /**
     * 根据主键查询交易渠道信息
     *
     * @param instId         多法人标识
     * @param srcChannelId   交易渠道标识
     * @param transChannelId 交易渠道细分
     * @return 交易渠道信息
     * @throws Exception 异常
     */
    SrcChannelInfo selectSrcChannelInfoByPrimaryKey(String instId, String srcChannelId, String transChannelId) throws Exception;

    /**
     * 根据多法人标识查询交易渠道信息
     *
     * @param instId 多法人标识
     * @return 交易渠道信息
     * @throws Exception 异常
     */
    List<SrcChannelInfo> selectSrcChannelInfoByInstId(String instId) throws Exception;

    /**
     * 加载所有交易渠道信息
     *
     * @param dbPoolCashNode     数据源缓存节点名称
     * @param srcChannelInfoList 交易渠道信息
     * @throws Exception 异常
     */
    void loadAllSrcChannelInfo(Set<String> dbPoolCashNode, List<SrcChannelInfo> srcChannelInfoList) throws Exception;
}
